function add(a, b) {
    // 把字符串转为数组并倒序，且把每位数转为number型，为了让数组下标为0的值为个位，符合人的思维
    var arrA = a.split('').reverse().map(i => parseInt(i))
    var arrB = b.split('').reverse().map(i => parseInt(i))
        // 获取最长数组的长度，为了创建一个结果数组在最长数组的长度加1
        // 符合进位思想
    var maxLen = arrA.length >= arrB.length ? arrA.length : arrB.length
        // 这里的目的是为了让两个数组的长度相同，为长度小的数组缺少的元素
        // 补零
    for (var i = 0; i < maxLen; i++) {
        arrA[i] = arrA[i] !== undefined ? arrA[i] : 0
    }
    for (var i = 0; i < maxLen; i++) {
        arrB[i] = arrB[i] !== undefined ? arrB[i] : 0
    }
    // 创建指定长度的数组，并且比最长位数多1，目的是有可能进位
    var resultArr = new Array()
    for (var i = 0; i <= maxLen; i++) {
        resultArr[i] = 0
    }
    // 开始循环结果数组，然后找到arrA和arrB中对应元素相加
    for (var i = 0; i < maxLen; i++) {
        // 计算对应位数的和
        var temp = resultArr[i]
        temp += arrA[i]
        temp += arrB[i]
            // 判断对应位数的值是否是十位数，是则为下位数加1
        if (temp >= 10) {
            temp -= 10
                // 因为resultArr比arrA和arrB多一位
            resultArr[i + 1] = 1
        }
        // 把获取到的结果赋值给对应结果数组的对应下标
        resultArr[i] = temp
    }
    // 到这里说明获取到了每位相加，并且里面的值是数值型和倒序

    // 判断结果数组中的最后一位是否为0，说明没有进位，则删除
    if (resultArr[resultArr.length - 1] === 0) {
        resultArr.pop()
    }
    // 把结果数组转为倒序排列
    resultArr = resultArr.reverse()
        //把结果数组转为字符串
    return resultArr.join('')
}



console.log(add('1223213213', '2223956213'));